//package com.vast.admin.service.impl;
//
//import cn.hutool.core.date.DateTime;
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.core.metadata.IPage;
//import com.vast.common.utils.StringUtils;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.vast.admin.entity.Dict;
//import com.vast.common.core.domain.entity.SysUser;
//import com.vast.admin.entity.enums.OperatorEum;
//import com.vast.admin.entity.enums.QueryOrderEnum;
//import com.vast.admin.mapper.DictMapper;
//import com.vast.admin.service.DictService;
//import com.vast.admin.utils.QueryBuilder;
//import com.vast.admin.utils.TableFieldColumnsUtils;
//import org.springframework.stereotype.Service;
//
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.List;
//import java.util.Map;
//@Service
//public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements DictService{
//
//    @Override
//    public IPage<Dict> queryList(Page<Dict> page, boolean listMode, String queryItems, String orderField, QueryOrderEnum order) {
//        QueryWrapper<Dict> queryWrapper = new QueryWrapper<>();
//        Map<String, String> fieldColumns = TableFieldColumnsUtils.getInstance().getFieldTableColumns(Dict.class);
//        if (listMode) {
//            // size 小于 0 不在查询 total 及分页，自动调整为列表模式。
//            // 注意！！这个地方自己控制好！！
//            page.setSize(-1);
//        }
//        if (!StringUtils.isEmpty(queryItems)) {
//            List<QueryBuilder> queryBuilders = new ArrayList<>();
//            String[] queryItemArr = queryItems.split(";");
//            if (queryItemArr.length > 0) {
//                for (String queryItemStr : queryItemArr) {
//                    String[] itemArr = queryItemStr.split(",");
//                    if (itemArr.length == 3) {
//                        String as = itemArr[1];
//                        String params = itemArr[2];
//                        if (!StringUtils.isEmpty(params)) {
//                            queryBuilders.add(new QueryBuilder(itemArr[0], OperatorEum.valueOf(as), itemArr[2]));
//                        }
//                    }
//                }
//            }
//
//            for (QueryBuilder queryBuilder : queryBuilders) {
//                //查询字段
//                String field = queryBuilder.getField();
//                //查询参数值
//                String params = queryBuilder.getParams();
//                if (fieldColumns.containsKey(field) && !StringUtils.isEmpty(params)) {
//                    //表属性
//                    String tableColumn = fieldColumns.get(field);
//                    if (queryBuilder.getAs() == OperatorEum.EQ) {
//                        queryWrapper.eq(tableColumn, params);
//                    } else if (queryBuilder.getAs() == OperatorEum.LIKE) {
//                        queryWrapper.like(tableColumn, params);
//                    } else if (queryBuilder.getAs() == OperatorEum.LIKELEFT) {
//                        queryWrapper.likeLeft(tableColumn, params);
//                    } else if (queryBuilder.getAs() == OperatorEum.LIKERIGHT) {
//                        queryWrapper.likeRight(tableColumn, params);
//                    } else if (queryBuilder.getAs() == OperatorEum.GE) {
//                        queryWrapper.ge(tableColumn, params);
//                    } else if (queryBuilder.getAs() == OperatorEum.LE) {
//                        queryWrapper.le(tableColumn, params);
//                    } else if (queryBuilder.getAs() == OperatorEum.NE) {
//                        queryWrapper.le(tableColumn, params);
//                    } else if (queryBuilder.getAs() == OperatorEum.GT) {
//                        queryWrapper.gt(tableColumn, params);
//                    }else if (queryBuilder.getAs() == OperatorEum.LT) {
//                        queryWrapper.lt(tableColumn, params);
//                    }
//                }
//            }
//        }
//        if (!StringUtils.isEmpty(orderField)) {
//            String[] orderByColumns = orderField.split(",");
//            String queryOrderByColumns = "";
//            if (orderByColumns.length > 0) {
//                StringBuilder sb = new StringBuilder();
//                for (String orderByColumn : orderByColumns) {
//                    if (fieldColumns.containsKey(orderByColumn)) {
//                        sb.append(fieldColumns.get(orderByColumn)).append(",");
//                    }
//                }
//                if (sb.length() > 0) {
//                    queryOrderByColumns = sb.deleteCharAt(sb.length() - 1).toString();
//                }
//            }
//            if (!StringUtils.isEmpty(queryOrderByColumns)) {
//                if (order == null) {
//                    order = QueryOrderEnum.ASC;
//                }
//                if (order == QueryOrderEnum.ASC) {
//                    queryWrapper.orderByAsc(queryOrderByColumns);
//                } else if (order == QueryOrderEnum.DESC) {
//                    queryWrapper.orderByDesc(queryOrderByColumns);
//                }
//            }
//
//        }
//        return baseMapper.selectPage(page, queryWrapper);
//    }
//
//    @Override
//    public boolean delete(SysUser manager, Long[] ids) {
//        List<Long> idsList = Arrays.asList(ids);
//        int count = baseMapper.deleteBatchIds(idsList);
//        return count == ids.length;
//    }
//
//    @Override
//    public Dict info(SysUser manager, Long id) {
//        return baseMapper.selectById(id);
//    }
//
//    @Override
//    public boolean addOrUpdate(SysUser manager, Dict bean) {
//        if (bean.getId() == null) {
//            bean.setCreateBy(manager.getUserId());
//            bean.setUpdateBy(manager.getUserId());
//            bean.setCreateTime(DateTime.now());
//            bean.setUpdateTime(DateTime.now());
//            bean.setValid(1);
//            return baseMapper.insert(bean) == 1;
//        } else {
//            bean.setUpdateBy(manager.getUserId());
//            bean.setUpdateTime(DateTime.now());
//            bean.setValid(1);
//            return baseMapper.updateById(bean) == 1;
//        }
//    }
//
//    @Override
//    public List<Dict> selectDictDataByType(String dictType) {
//        QueryWrapper queryWrapper = new QueryWrapper<>().eq(Dict.COL_TYPE,dictType).ne(Dict.COL_PARENT_ID,0);
//        return baseMapper.selectList(queryWrapper);
//    }
//
//    @Override
//    public String selectConfigByKey(String configKey) {
//        QueryWrapper queryWrapper = new QueryWrapper<>().eq(Dict.COL_TYPE,configKey).ne(Dict.COL_PARENT_ID,0);
//        return baseMapper.selectOne(queryWrapper).getValue();
//    }
//
//    @Override
//    public IPage<Dict> selectDictTypeList(Page<Dict> page, Dict dict) {
//        return baseMapper.selectDictTypeList(page, dict);
//    }
//
//    @Override
//    public Dict selectDictTypeById(Long dictId) {
//        QueryWrapper queryWrapper = new QueryWrapper<>().eq(Dict.COL_ID,dictId);
//        return baseMapper.selectOne(queryWrapper);
//    }
//
//    @Override
//    public IPage<Dict> selectDictDataList(Page<Dict> page, Dict dict) {
//        QueryWrapper queryWrapper = new QueryWrapper<>().eq(Dict.COL_TYPE,dict.getType()).ne(Dict.COL_PARENT_ID,0);
//        return baseMapper.selectPage(page, queryWrapper);
//    }
//}
